package capaModelo;

import java.io.Serializable;
import java.net.URL;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.HashMap;

import javax.imageio.ImageIO;

import main.Aplication;
import capaGrafica.Carrito_V;
import capaGrafica.Listado_V;
import capaGrafica.Login_V;
import capaGrafica.Producto_V;
import capaGrafica.Registro_V;
import capaGrafica.Usuario_V;
import capaPersistencia.ModuloProductos;
import capaPersistencia.ModuloUsuarios;
import data.Cesta;
import data.ProductoVO;
import data.UsuarioVO;

public class Listado_M implements Modelo{

	@Override
	public void pressed(int code, AbstractMap<String, Serializable> data) {
		
		ModuloProductos miModulo = new ModuloProductos();
		ProductoVO p;
		AbstractMap<String,Serializable> datos = new HashMap<String, Serializable>();
		ArrayList<ProductoVO> array;
		switch(code){
		
		case Listado_V.CLICK_PRODUCTO:
			
			if((p = miModulo.obtenerProducto((String)data.get("id"))) != null){
				
				
				String url = p.getImagen();
				/* Hasta que no tenga mas imagenes */
					int i = 1;
					try{
					while(ImageIO.read(new URL(url+"/imagen"+i+".jpg")) != null){
						datos.put("imagen"+i,url+"/imagen"+i+".jpg");
						i++;
					}
					}catch(Exception e){}
				
				datos.put("descripcion", p.getDescripcion());
				datos.put("stock", p.getStock());
				datos.put("nombre", p.getNombre());
				datos.put("tipo", p.getTipo());
				datos.put("precio", p.getPrecio());
				datos.put("id", p.getId());
				
				if(p.getTipo().equals("Libro") || p.getTipo().equals("Pelicula")){
					datos.put("genero", p.getGenero());
					datos.put("autor", p.getAutor());
					datos.put("agno", p.getAnyo());
				}
				else if(p.getTipo().equals("Coleccionable")){
					datos.put("tamagno", p.getTamano());
				}
				else{
					datos.put("talla", p.getTalla());
					datos.put("color", p.getColor());
				}
				
				Aplication.changeToWindow(new Producto_V(), datos);
			}
			else{
				
			}
			break;
		case Listado_V.MENU_CARRITO:
			Aplication.changeToWindow(new Carrito_V(), null);
			break;
		case Listado_V.MENU_LOGIN:
			Aplication.changeToWindow(new Login_V(), null);
			break;
			
		case Listado_V.MENU_REGISTRO:
			Aplication.changeToWindow(new Registro_V(), null);
			
			break;
			
		case(Listado_V.MENU_USER):
			ModuloUsuarios miModelo = new ModuloUsuarios();
			UsuarioVO user = miModelo.obtenerUsuario(Aplication.logedUser);
			/* Rellenar datos a pasar */
			datos.put("user", user.getUser());
			datos.put("pass", user.getPass());
			datos.put("name", user.getNombre());
			datos.put("city", user.getCiudad());
			datos.put("fecha", user.getFechaNacimiento());
			datos.put("rol", user.getRol());
			datos.put("direccion", user.getDireccion());
			datos.put("email", user.getEmail());
			
			Aplication.changeToWindow(new Usuario_V(), datos);
			break;
			
		case Listado_V.MENU_LOGOUT:
			Aplication.logedUser = null;
			Aplication.cesta = new Cesta();
			Aplication.changeToWindow(new Login_V(), null);

			break;
			
		case Listado_V.BTN_BUSCADOR:
			array = miModulo.obtenerProductosNombre((String)data.get("busqueda"));
			datos.put("productos", array);
			Aplication.changeToWindow(new Listado_V(), datos);
			
			break;
			
		case Listado_V.BTN_CATEGORIA:
			array = miModulo.ordenarProductosTipo();
			datos.put("productos", array);
			Aplication.changeToWindow(new Listado_V(), datos);
			
			break;
			
		case Listado_V.BTN_PRECIO:
			array = miModulo.ordenarProductosPrecio();
			datos.put("productos", array);
			Aplication.changeToWindow(new Listado_V(), datos);
			
			break;
			
		case Listado_V.BTN_NOMBRE:
			array = miModulo.ordenarProductosNombre();
			datos.put("productos", array);
			Aplication.changeToWindow(new Listado_V(), datos);
			
			break;
		}
		

		
	}

}
